package com.mlk.constant;

import com.google.common.collect.Maps;

import java.util.Map;

/**
 * eng的常量类
 *
 * @author xulu
 */
public interface EngConstant {

    /**
     * 短信验证码
     */
    String PHONE_PREFIX_CODE = "PHONE_PREFIX_CODE";
    /**
     * 商品类型
     */
    String GOOD_TYPE = "good_type";
    /**
     * 废品类型
     */
    String WASTE_TYPE = "waste_type";

    /**
     * 店铺类型
     */
    String SHOP_TYPE = "shop_type";

    /**
     * 文件路径
     */
    public interface PicPath {
        /**
         * 店铺照片
         */
        String SHOP_PIC = "/shop/pic";

        /**
         * 店铺执照
         */
        String SHOP_LICENSE = "/shop/license";

        /**
         * 客户端(卖废品的)的轮播图的展示
         */
        String SYSTEM_BANNER_CLIENT = "/system/banner/client";

        /**
         * 积分商城的轮播图展示
         */
        String SYSTEM_BANNER_SERVER = "/system/banner/shop";

        /**
         * 图库照片
         */
        String SYSTEM_PIC_BASE = "/system/pic/base";

        /**
         * 商品详情的介绍图片
         */
        String GOOD_INTRODUCE = "/good/introduce";

        String GOOD_MAIN = "/good/main";

        /**
         * 报备的图片地址
         */
        String REPAIR_PATH = "/repair";

        /**
         * 换购的图片
         */
        String REBACK_PATH = "/reback";
    }

    /**
     * 用户订单类型
     */
    interface UserOrderType {
        /**
         * 估量下单
         */
        int TOTAL_ORDER = 1;
        /**
         * 明细下单
         */
        int DETAIL_ORDER = 2;
    }

    /**
     * 废品回收订单状态
     */
    interface WASTE_ORDER_STATUS {

        /**
         * 用户取消的订单
         */
        int CANCELED_ORDER = 0;

        /**
         * 订单创建状态(等待分配)
         */
        int INIT_ORDER = 1;
        /**
         * 订单已接受,业务员需要取货
         */
        int RECEIVED_ORDER = 2;

        /**
         * 已定价,需要管理员审核
         */
        int PICKED_ORDER = 3;

        /**
         * 审核失败
         */
        int REJECT_ORDER = 4;

        /**
         * 业务员确认
         */
        int EMP_CONFIRMED = 5;
        /**
         * 完成的订单(审核成功)
         */
        int FINISH_ORDER = 6;
    }

    /**
     * 收益来源
     */
    interface IN_REMAIN_SOURCE {
        /**
         * 卖电池
         */
        int IN_REMAIN = 1;
    }

    /**
     * 收益进项映射
     */
    static class IN_REMAIN_SOURCE_REF {
        private static Map<Integer, String> inremainsourceref = Maps.newHashMap();

        static {
            inremainsourceref.put(IN_REMAIN_SOURCE.IN_REMAIN, "废品售卖");
        }

        public static String getValue(int key) {
            return inremainsourceref.get(key);
        }
    }

    /**
     * 收益去向
     */
    interface OUT_REMAIN_TARGET {
        /**
         * 提现
         */
        int OUT_REMAIN = 1;
    }

    /**
     * 收益去项映射
     */
    static class OUT_REMAIN_TARGET_REF {
        private static Map<Integer, String> outremainsourceref = Maps.newHashMap();

        static {
            outremainsourceref.put(OUT_REMAIN_TARGET.OUT_REMAIN, "提现");
        }

        public static String getValue(int key) {
            return outremainsourceref.get(key);
        }
    }

    /**
     * 积分来源
     */
    interface IN_SCORE_SOURCE {
        /**
         * 签到积分
         */
        int SIGN_SCORE = 1;

        /**
         * 售卖废物获取的积分
         */
        int SELL_SCORE = 2;

        /**
         * 商城买东西获取的积分
         */
        int BUY_SCORE = 3;

        /**
         * 抽奖获取积分
         */
        int BET_SOCRE = 4;
    }

    /**
     * 积分进项映射
     */
    static class IN_SCORE_SOURCE_REF {

        private static Map<Integer, String> scoresourceref = Maps.newHashMap();

        static {
            scoresourceref.put(IN_SCORE_SOURCE.SIGN_SCORE, "签到积分");
            scoresourceref.put(IN_SCORE_SOURCE.SELL_SCORE, "售卖废物");
            scoresourceref.put(IN_SCORE_SOURCE.BUY_SCORE, "商城购买");
            scoresourceref.put(IN_SCORE_SOURCE.BET_SOCRE, "中奖所得积分");
        }

        public static String getValue(int key) {
            return scoresourceref.get(key);
        }
    }

    /**
     * 积分去向
     */
    interface OUT_SCORE_TARGET {
        /**
         * 积分购物
         */
        int BUY_SCORE = 1;

        /**
         * 积分抽奖
         */
        int BET_SCORE = 2;

        /**
         * 积分兑换
         */
        int CASH_SCORE = 3;
    }

    static class OUT_SCORE_TARGET_REF {
        private static Map<Integer, String> scoreTargetsRef = Maps.newHashMap();

        static {
            scoreTargetsRef.put(OUT_SCORE_TARGET.BUY_SCORE, "积分购物");
            scoreTargetsRef.put(OUT_SCORE_TARGET.BET_SCORE, "抽奖消耗积分");
            scoreTargetsRef.put(OUT_SCORE_TARGET.CASH_SCORE, "积分兑换");
        }

        public static String getValue(int key) {
            return scoreTargetsRef.get(key);
        }
    }


    /**
     * 订单审核结果类型
     */
    interface ORDER_VERIFY_TYPE {
        /**
         * 通过
         */
        int ok = 1;
        /**
         * 失败
         */
        int fail = 0;
    }

    /**
     * 额度申请状态
     */
    interface REMAIN_APPLY {
        /**
         * 初始化状态
         */
        int INIT_STATUS = 1;
        /**
         * 申请成功
         */
        int OK_STATUS = 2;
        /**
         * 申请失败
         */
        int FAIL_STATUS = 3;
    }

    /**
     * 业务员额度变化类型
     */
    interface EMP_REMAIN_LOG_TYPE {
        /**
         * 申请导致变化
         */
        int APPLY_LOG = 1;

        /**
         * 管理员分配导致
         */
        int ADMIN_ALLOCATE_LOG = 2;
    }

    /**
     * 商城订单状态
     */
    interface GOODORDER_STATUS {

        /**
         * 订单取消状态
         */
        int CANCEL_STATUS = 0;
        /**
         * 订单初始化状态
         */
        int INIT_STATUS = 1;

        /**
         * 订单已付款
         */
        int PAYED_STATUS = 2;

        /**
         * 已接单
         */
        int PICKED_STATUS = 3;

        /**
         * 已发货
         */
        int SENDED_STATUS = 4;

        /**
         * 订单完成
         */
        int FINISHED_STATUS = 5;

    }


    /**
     * 库存操作类型
     */
    interface STOCK_OPS_TYPE {

        /**
         * 废品回收
         */
        int COL_TYPE = 1;

        /**
         * 盘点
         */
        int CAL_TYPE = 2;

        /**
         * 废品出售
         */
        int SELL_TYPE = 3;

    }

    /**
     * 库存操作类型映射
     */
    static class STOCK_OPS_TYPE_REF {
        private static Map<Integer, String> maps = Maps.newHashMap();

        static {
            maps.put(1, "废品回收");
            maps.put(2, "盘点操作");
            maps.put(3, "废品出售");
        }

        public static String getValue(int key) {
            return maps.get(key);
        }
    }

    /**
     * 报备状态
     */
    interface REPAIR_STATUS{
        /**
         * 报备提交(报备中)
         */
        int INIT_STATUS = 1;

        /**
         * 已接受
         */
        int ACCEPT_STATUS = 2;

        /**
         * 报备完成
         */
        int FINISH_STATUS = 3;
    }

    /**
     * 报备状态转换
     */
    static class REPAIR_STATUS_REF{
        final static Map<Integer,String> result = Maps.newHashMap();
        static{
            result.put(1,"报备申请中");
            result.put(2,"已接受");
            result.put(3,"已完成");
        }

        /**
         * 返回对应的值
         * @param key
         * @return
         */
        public static final String adapt(Integer key){
            return result.get(key);
        }
    }


    /**
     * 换购状态
     */
    interface REBACK_STATUS{
        /**
         * 换购提交(报备中)
         */
        int INIT_STATUS = 1;

        /**
         * 已接受
         */
        int ACCEPT_STATUS = 2;

        /**
         * 换购完成
         */
        int FINISH_STATUS = 3;
    }

    /**
     * 报备状态转换
     */
    static class REBACK_STATUS_REF{
        final static Map<Integer,String> result = Maps.newHashMap();
        static{
            result.put(1,"换购申请中");
            result.put(2,"已接受");
            result.put(3,"已完成");
        }

        /**
         * 返回对应的值
         * @param key
         * @return
         */
        public static final String adapt(Integer key){
            return result.get(key);
        }
    }

}
